/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.entidade.registroimovel;

import br.com.deployment.entidade.arquivo.Anexo;
import br.com.deployment.entidade.empresa.Cartorio;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.*;
import javax.validation.constraints.NotNull;

/**
 *
 * @author roniere
 */
@Entity
public class Imovel implements Serializable{
 
    @Id
    @SequenceGenerator(name = "seq_imovel", sequenceName = "seq_imovel")
    @GeneratedValue(generator = "seq_imovel", strategy = GenerationType.SEQUENCE)
    private int id;
    
    @NotNull
    @Column(length=20)
    private String registro;   
      
    @OneToMany//(fetch= FetchType.EAGER)
    private List<Averbacao> averbacao;
    
    @OneToMany//(fetch= FetchType.EAGER)
    private List<Registro> registros;
    
    @OneToMany(cascade= CascadeType.ALL)//, fetch= FetchType.EAGER)
    private List<Anexo> anexo;
    
    @OneToOne(cascade= CascadeType.ALL)
    private Objeto objeto;
    
    @OneToMany(fetch= FetchType.EAGER)
    private List<Imovel> imovelAnterior;
    
    @Column
    private String imovelAnteriorSemCadastro;
    
    @Temporal(TemporalType.DATE)
    private Date dataCadastro;
    
    @NotNull(message="Origem do imóvel é obrigatório")
    @OneToOne
    private Operacao operacao;
    
    @OneToOne
    private Livro livro;
    
    @OneToMany
    private List<Folha> folhas;
    
    @Column
    private String folhasString;
    
    @OneToOne
    private Cartorio cartorio;

    public Imovel() {
    }

    public Cartorio getCartorio() {
        return cartorio;
    }

    public void setCartorio(Cartorio cartorio) {
        this.cartorio = cartorio;
    }
    
    

    
    public List<Folha> getFolhas() {
        return folhas;
    }

    public String getFolhasString() {
        return folhasString;
    }

    public void setFolhasString(String folhasString) {
        this.folhasString = folhasString;
    }

    public void setFolhas(List<Folha> folhas) {
        this.folhas = folhas;
    }

    public Livro getLivro() {
        return livro;
    }

    public void setLivro(Livro livro) {
        this.livro = livro;
    }
    
    

    public List<Registro> getRegistros() {
        return registros;
    }

    public void setRegistros(List<Registro> registros) {
        this.registros = registros;
    }
    
    

    public String getImovelAnteriorSemCadastro() {
        return imovelAnteriorSemCadastro;
    }

    public void setImovelAnteriorSemCadastro(String imovelAnteriorSemCadastro) {
        this.imovelAnteriorSemCadastro = imovelAnteriorSemCadastro;
    }
    
    

    public String getRegistro() {
        return registro;
    }

    public void setRegistro(String registro) {
        this.registro = registro;
    }

    public Operacao getOperacao() {
        return operacao;
    }

    public void setOperacao(Operacao operacao) {
        this.operacao = operacao;
    }
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public List<Anexo> getAnexo() {
        return anexo;
    }

    public void setAnexo(List<Anexo> anexo) {
        this.anexo = anexo;
    }

    public List<Averbacao> getAverbacao() {
        return averbacao;
    }

    public void setAverbacao(List<Averbacao> averbacao) {
        this.averbacao = averbacao;
    }

    public Date getDataCadastro() {
        return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
        this.dataCadastro = dataCadastro;
    }

    public Objeto getObjeto() {
        return objeto;
    }

    public void setObjeto(Objeto objeto) {
        this.objeto = objeto;
    }

    public List<Imovel> getImovelAnterior() {
        return imovelAnterior;
    }

    public void setImovelAnterior(List<Imovel> imovelAnterior) {
        this.imovelAnterior = imovelAnterior;
    }



    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Imovel other = (Imovel) obj;
        if (this.id != other.id) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 23 * hash + this.id;
        return hash;
    }

    @Override
    public String toString() {
        StringBuffer sb = new StringBuffer();
        
        return "Imovel{ idd=" + id + "registro=" + registro + ", averbacao=" + averbacao + ", anexo=" + anexo + ", objeto=" + objeto + ", regAnterior=" + sb + ", dataCadastro=" + dataCadastro + '}';
    }



}
